﻿using System;
using System.IO;
namespace BingDesktopChanger
{
    interface IImageManager
    {
        /// <summary>
        /// Elimina una imágen
        /// </summary>
        /// <param name="imageName">Imagen a eliminar</param>
        void DeleteImage(string imageName);

        /// <summary>
        /// Elimina las imágenes de una fecha en particular
        /// </summary>
        /// <param name="targetDay"></param>
        void DeleteImages(DateTime targetDay);

        /// <summary>
        /// Verifica la existencia de una imágen (en función de su nombre)
        /// </summary>
        /// <param name="imageName">imágen a verificar</param>
        /// <returns>true si la imágen ya existe</returns>
        bool ExistsImage(string imageName);

        /// <summary>
        /// Verifica la existencia de imágenes para un día en particular
        /// </summary>
        /// <param name="targetDate">día de trabajo</param>
        /// <returns>true si existe al menos una imágen</returns>
        bool ExistsDayImages(DateTime targetDate);

        /// <summary>
        /// Obtiene las imágenes correspondientes a un día en particular
        /// </summary>
        /// <param name="targetDate">día del cual se desean obtener las imágenes</param>
        /// <returns></returns>
        string[] GetImageList(DateTime targetDate);

        /// <summary>
        /// Persiste una imagen
        /// </summary>
        /// <param name="imageContent">contenido binario de la imágen</param>
        /// <param name="targetDay">día en el cual se guarda la imágen</param>
        /// <param name="imageName">nombre de la imágen</param>
        void SaveImage(Stream imageContent, DateTime targetDay, string imageName);

        /// <summary>
        /// Borra las imágenes dentro de un rango de fechas
        /// </summary>
        /// <param name="fromDate">fecha de inicio a partir de la cual borrar las imágenes</param>
        /// <param name="toDate">fecha hasta la cual borrar las imágenes</param>
        void DeleteImages(DateTime fromDate, DateTime toDate);
    }
}
